package cn.tt.tuantuanerp.tuantuanerp.search.service.impl;

import cn.tt.tuantuanerp.tuantuanerp.comment.ex.ServiceException;
import cn.tt.tuantuanerp.tuantuanerp.comment.pojo.vo.SkuDetailsVO;
import cn.tt.tuantuanerp.tuantuanerp.comment.pojo.vo.SkuListItemVO;
import cn.tt.tuantuanerp.tuantuanerp.comment.web.ServiceCode;
import cn.tt.tuantuanerp.tuantuanerp.product.service.ISkuService;
import cn.tt.tuantuanerp.tuantuanerp.search.entity.Sku;
import cn.tt.tuantuanerp.tuantuanerp.search.repository.SkuRepository;
import cn.tt.tuantuanerp.tuantuanerp.search.service.ISkuSearchService;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Slf4j
@Service
public class SkuSearchServiceImpl implements ISkuSearchService {

    @DubboReference
    ISkuService dubboSkuService;
    @Autowired
    SkuRepository skuRepository;

    @Override
    public List<SkuListItemVO> querySkuBySkuNameMatches(String name) {
        log.debug("查询名:{}",name);
        Iterable<Sku> skus = skuRepository.querySkuBySkuNameMatches(name);
        if (skus==null){
            throw new ServiceException(ServiceCode.ERR_NOT_FOUND,"没有搜索到匹配的sku信息...");
        }
        ArrayList<SkuListItemVO> skuList = new ArrayList<>();
        for (Sku sku : skus) {
            SkuListItemVO skuListItemVO = new SkuListItemVO();
            BeanUtils.copyProperties(sku,skuListItemVO);
            skuList.add(skuListItemVO);
            log.debug("查询结果:{}",skuListItemVO);
        }
        return skuList;
    }

    @Override
    public void addList() {
        List<SkuDetailsVO> skuDetailsVOList = dubboSkuService.searchSku();
        List<Sku> skus = new ArrayList<>();
        for (SkuDetailsVO list : skuDetailsVOList) {
            Sku sku = new Sku();
            BeanUtils.copyProperties(list, sku);
            skus.add(sku);
        }
        skuRepository.saveAll(skus);
    }
}
